package pl.makowski.neotripletriad.rules;

import pl.makowski.neotripletriad.game.Game;

/**
 * @author M4lysh
 * a Class modeling a set of game rules 
 */
public class Ruleset {
	private static final String TAG = Ruleset.class.getSimpleName();
	private TradeRule mTradeRule;
	private Boolean	mElemental;
	private Boolean	mRandom;
	private Boolean	mOpen;
	private Boolean	mSame;
	private Boolean	mSameWall;
	private Boolean mSuddenDeath;
	private Boolean mPlus;
	private Boolean mCombo;
	
	/**
	 * creates custom ruleset
	 * @param tradeRule 
	 * @param elemental
	 * @param random
	 * @param open
	 * @param same
	 * @param sameWall
	 * @param suddenDeath
	 * @param plus
	 * @param combo
	 */
	public Ruleset(TradeRule tradeRule, Boolean elemental, Boolean random, Boolean open,
			Boolean same, Boolean sameWall, Boolean suddenDeath, Boolean plus,
			Boolean combo) {
		mTradeRule = tradeRule;
		mElemental = elemental;
		mRandom = random;
		mOpen = open;
		mSame = same;
		mSameWall = sameWall;
		mSuddenDeath = suddenDeath;
		mPlus = plus;
		mCombo = combo;
	}
	
	/**
	 * creates default ruleset
	 */
	public Ruleset() {
		mTradeRule = TradeRule.One;
		mElemental = false;
		mRandom = false;
		mOpen = false;
		mSame = false;
		mSameWall = false;
		mSuddenDeath = false;
		mPlus = false;
		mCombo = false;
	}
	
	/**
	 * creates full ruleset
	 */
	public Ruleset(TradeRule tradeRule) {
		mTradeRule = tradeRule;
		mElemental = true;
		mRandom = true;
		mOpen = true;
		mSame = true;
		mSameWall = true;
		mSuddenDeath = true;
		mPlus = true;
		mCombo = true;
	}
	
	public TradeRule getmTradeRule() {
		return mTradeRule;
	}
	public Boolean getmElemental() {
		return mElemental;
	}
	public Boolean getmRandom() {
		return mRandom;
	}
	public Boolean getmOpen() {
		return mOpen;
	}
	public Boolean getmSame() {
		return mSame;
	}
	public Boolean getmSameWall() {
		return mSameWall;
	}
	public Boolean getmSuddenDeath() {
		return mSuddenDeath;
	}
	public Boolean getmPlus() {
		return mPlus;
	}
	public Boolean getmCombo() {
		return mCombo;
	}
}
